下面是添加了详细注释的版本，以帮助更好地理解代码中每个宏的用途：

```cpp
/*
 * assert_utilits.h
 *
 *  Created on: 2016年2月3日
 *      Author: 10km
 */

#ifndef COMMON_SOURCE_CPP_ASSERT_MACROS_H_
#define COMMON_SOURCE_CPP_ASSERT_MACROS_H_

#include <stdexcept>
#include <string>

 /**
  * @brief 将传入的参数转换为字符串。
  *
  * 使用了两个宏定义以确保宏参数被正确转换为字符串。
  * _DEF_STRING 直接进行字符串化，而 DEF_TO_STRING 会先进行宏替换操作。
  */
#define _DEF_STRING(x) #x
#define DEF_TO_STRING(x) _DEF_STRING(x)

  /**
   * @brief 用于错误信息定位的宏。
   *
   * SOURCE_AT 会生成当前文件名和行号的信息，用于构造更加详细的错误消息。
   */
#define SOURCE_AT __FILE__ ":" DEF_TO_STRING(__LINE__)

   /**
    * @brief 构造错误信息字符串。
    *
    * 将位置信息与自定义的错误消息连接起来生成完整的错误信息。
    * @param msg 自定义的错误信息。
    */
#define ERROR_STR(msg) std::string(SOURCE_AT ":").append(msg)

    /**
     * @brief 根据表达式的真值抛出异常。
     *
     * 如果指定的表达式为假，则抛出指定类型的异常。
     * @param except 要抛出的异常类型。
     * @param expression 要检查的逻辑表达式。
     */
#define throw_except_if_false(except,expression) \
    if(!(expression))\
        throw except();

     /**
      * @brief 根据表达式的真值抛出异常，并带有错误信息。
      *
      * 如果表达式为真，抛出带有指定错误信息的异常。
      * @param except 要抛出的异常类型。
      * @param expression 要检查的逻辑表达式。
      * @param msg 要附加的错误信息字符串。
      */
#define throw_except_if_msg(except,expression,msg) \
    if(expression)\
        throw except(ERROR_STR(msg));

      /**
       * @brief 根据表达式的真值抛出异常，并附带表达式作为信息。
       *
       * 如果表达式为真，抛出带有表达式字符串化后的异常信息。
       * @param except 要抛出的异常类型。
       * @param expression 要检查的逻辑表达式。
       */
#define throw_except_if(except,expression) throw_except_if_msg(except,expression,#expression)

       /**
        * @brief 如果表达式为真，则抛出std::invalid_argument异常，并附带自定义错误信息。
        *
        * @param expression 要检查的逻辑表达式。
        * @param msg 要附加的错误信息。
        */
#define throw_if_msg(expression,msg) throw_except_if_msg(std::invalid_argument,expression,msg)

        /**
         * @brief 如果表达式为真，则抛出std::invalid_argument异常。
         *
         * 如果表达式的值为真，抛出的异常将附带表达式本身作为错误信息。
         * @param expression 要检查的逻辑表达式。
         */
#define throw_if(expression) throw_except_if(std::invalid_argument,expression)

         /**
          * @brief 如果给定指针为空，抛出异常并附带错误信息。
          *
          * @param except 要抛出的异常类型。
          * @param p 被检查的指针。
          */
#define throw_except_if_null(except,p) throw_except_if_msg(except,nullptr==(p),#p" is null")

          /**
           * @brief 如果给定指针为空，抛出std::invalid_argument异常，并附带错误信息。
           *
           * 如果指针为空，错误信息将包含指针表达式。
           * @param p 被检查的指针。
           */
#define throw_if_null(p) throw_if_msg(nullptr==(p),#p" is null")

#endif /* COMMON_SOURCE_CPP_ASSERT_MACROS_H_ */
    ```

    这些注释为代码中的每个宏提供了更明确的说明，包括其目的、参数和行为。这应该有助于任何使用或维护这段代码的人更好地理解其功能和应用。






///*
// * assert_utilits.h
// *
// *  Created on: 2016年2月3日
// *      Author: 10km
// */
//
//#ifndef COMMON_SOURCE_CPP_ASSERT_MACROS_H_
//#define COMMON_SOURCE_CPP_ASSERT_MACROS_H_
//#include <stdexcept>
//#include <string>
//#define _DEF_STRING(x) #x
//#define DEF_TO_STRING(x) _DEF_STRING(x)
//#define SOURCE_AT __FILE__ ":" DEF_TO_STRING(__LINE__)
//#define ERROR_STR(msg) std::string(SOURCE_AT ":").append(msg)
//
//#define throw_except_if_false(except,expression) \
//	if(!expression)\
//		throw except();
//
//#define throw_except_if_msg(except,expression,msg) \
//	if(expression)\
//		throw except(ERROR_STR(msg));
//#define throw_except_if(except,expression) throw_except_if_msg(except,expression,#expression)
//#define throw_if_msg(expression,msg) throw_except_if_msg(std::invalid_argument,expression,msg)
//#define throw_if(expression) throw_except_if(std::invalid_argument,expression)
//#define throw_except_if_null(except,p) throw_except_if_msg(except,nullptr==p,#p" is null")
//#define throw_if_null(p) throw_if_msg(nullptr==p,#p" is null")
//
//#endif /* COMMON_SOURCE_CPP_ASSERT_MACROS_H_ */
